package com.qdu;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class HBaseGet {
    public static void main(String[] args) {
        // 创建HBase的客户端连接配置,包括Zookeeper的地址和端口等信息
        Configuration config = HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum", "niit-master");
        config.setInt("hbase.rpc.timeout", 20000);
        config.setInt("hbase.client.operation.timeout", 20000);
        config.setInt("hbase.client.scanner.timeout.period", 20000);

        // 获取表的连接和数据的操作逻辑可以在这里实现
        try (
                Connection connection = ConnectionFactory.createConnection(config);
                Table tlog = connection.getTable(TableName.valueOf("t_log"))
        ) {

            // 创建Get对象，并指定RowKey的值
            Get get = new Get("00000000001".getBytes());

            // 向Get中添加要查询的列族或者具体到列
//            get.addColumn(
//                    "f".getBytes(),
//                    Bytes.toBytes("myname")
//                    );
            // 获取get的结果
            Result result = tlog.get(get);
            // 遍历返回行的所有列和数据
            for(Cell cell : result.rawCells()){

                // 错误的使用方式
//                System.out.println(
//                        "列族=" + new String(cell.getFamilyArray())
//                );
//                System.out.println(
//                        "列标识符=" + new String(cell.getFamilyArray())
//                );
//                System.out.println(
//                        "Value=" + new String(cell.getFamilyArray())
//                );
                System.out.println(
                        "列族=" + new String(CellUtil.cloneFamily(cell))
                );
                System.out.println(
                        "列标识符=" + new String(CellUtil.cloneQualifier(cell))
                );
                System.out.println(
                        "Value=" + new String(CellUtil.cloneValue(cell))
                );
            }

        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}
